import request from "@/utils/request";

// const COMMON_BASE_URL = "/api/v1";
const COMMON_BASE_URL = "/api";

/**
 * 通用 API 模块
 * 支持分页查询、批量删除、批量修改
 */
export const CommonHmiDataAPI = {
  /**
   * 分页查询
   * @param queryParams 查询参数
   */
  getList(baseUrl: string, queryParams: any) {
    return request<any, PageResult<any[]>>({
      url: `${COMMON_BASE_URL}${baseUrl}/list`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 使用 offset/limit 的分页查询
   * @param queryParams 查询参数
   */
  getOffsetList(baseUrl: string, queryParams: any) {
    return request<any, PageResult<any[]>>({
      url: `${COMMON_BASE_URL}${baseUrl}/offset-list`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取完整列表（不分页）
   * @param url 接口路径
   */
  fetchFullList(url: string) {
    url = COMMON_BASE_URL + url;
    return request<any, any>({
      url,
      method: "get",
    });
  },

  /**
   * 获取group过滤列表（不分页）
   * @param url 接口路径
   */
  fetchGroupFiltedList(url: string, group: number[]) {
    url = COMMON_BASE_URL + url;
    if (group && group.length > 0) {
      // group = [1,2,3] , url 后缀特定为 ?group=1&group=2&group=3
      url += "?" + group.map((g) => `group=${g}`).join("&");
    }
    return request<any, any>({
      url,
      method: "get",
    });
  },

  /**
   * 批量删除
   * @param ids 主键数组
   */
  batchDelete(baseUrl: string, ids: (string | number)[]) {
    return request({
      url: `${COMMON_BASE_URL}${baseUrl}/batch-delete`,
      method: "post",
      data: { ids },
    });
  },

  /**
   * 批量重置
   * @param ids 主键数组
   */
  batchReset(baseUrl: string, ids: (string | number)[]) {
    return request({
      url: `${COMMON_BASE_URL}${baseUrl}`,
      method: "post",
      data: { ids },
    });
  },

  /**
   * 批量修改
   * @param data 批量修改数据
   */
  batchUpdate(baseUrl: string, data: any[]) {
    return request({
      url: `${COMMON_BASE_URL}${baseUrl}/batch-update`,
      method: "post",
      data,
    });
  },
};

/**
 * 分页返回类型
 */
export interface PageResult<T> {
  list: T;
  total: number;
}

/**
 * 分页查询参数
 */
export interface CommonHmiDataOffsetPageQuery extends OffsetPageQuery {
  /** 搜索关键字 */
  keywords?: string;
  /** 定值区 */
  fixedValueArea?: number;
  /** 创建时间 */
  createTime: [string, string];
}
